
// import axios from 'axios';
// import { message } from 'antd';
// import Cookies from 'js-cookie';

// const service = axios.create({
//   baseURL: process.env.NEXT_PUBLIC_API_URL,
//   headers: { 'Content-Type': 'application/json;charset=utf-8', },
//   timeout: 100000,
// });

// const getLocalToken = () => {
//   return Cookies.get('access_token')
// };

// service.interceptors.request.use(
//   (config) => {
//     if (!config.token) {
//       const token = getLocalToken();
//       if (token) {
//         config.headers['Authorization'] = `Bearer ${token}`;
//       }
//     } else {
//       config.headers['Authorization'] = `Bearer ${config.token}`;
//     }
//     return config;
//   },
//   (error) => {
//     if (axios.isCancel(error)) {
//       return Promise.reject(error);
//     }
//     message.error('请求错误，请稍后再试');
//     return Promise.reject(error);
//   }
// );


// // 响应拦截器
// service.interceptors.response.use(
//   (response) => {
//     return response.data;
//   },
//   (error) => {
//     if (error.response && error.response.status === 401) {
//       localStorage.removeItem('access_token');
//       window.location.href = '/login';
//     }
//     if (error.code == 'ECONNABORTED') {
//       message.error('请求超时，请稍后再试')
//     }
//     if (axios.isCancel(error)) {
//       window.location.href = '/login';
//       return;
//     }
//     return Promise.reject(error);
//   }
// );

// export default service;

import axios from 'axios';
import { message } from 'antd';
import Cookies from 'js-cookie';

// 动态 baseURL 的逻辑
const getDynamicBaseUrl = (config) => {
  // 如果请求中传递了 baseURL 参数，则使用它
  if (config.baseURL) {
    return config.baseURL;
  }
  // 否则使用环境变量中的值
  return process.env.NEXT_PUBLIC_API_URL;
};

const getLocalToken = () => {
  return Cookies.get('access_token')
};

// 创建 axios 实例
const service = axios.create({
  headers: { 'Content-Type': 'application/json;charset=utf-8', },
  timeout: 100000,
});

// 请求拦截器
service.interceptors.request.use(
  (config) => {
    // 动态设置 baseURL
    config.baseURL = getDynamicBaseUrl(config);
    if (!config.token) {
      const token = getLocalToken();
      if (token) {
        config.headers['Authorization'] = `Bearer ${token}`;
      }
    } else {
      config.headers['Authorization'] = `Bearer ${config.token}`;
    }
    return config;
  },
  (error) => {
    if (axios.isCancel(error)) {
      return Promise.reject(error);
    }
    message.error('请求错误，请稍后再试');
    return Promise.reject(error);
  }
);

// 响应拦截器
service.interceptors.response.use(
  (response) => {
    return response.data;
  },
  (error) => {
    if (error.response && error.response.status === 401) {
      localStorage.removeItem('access_token');
      window.location.href = '/login';
    }
    if (error.code == 'ECONNABORTED') {
      message.error('请求超时，请稍后再试')
    }
    if (axios.isCancel(error)) {
      window.location.href = '/login';
      return;
    }
    return Promise.reject(error);
  }
);

export default service;